package com.yjq.programmer.controller.app;

import com.yjq.programmer.dto.MusicMenuDTO;
import com.yjq.programmer.dto.MusicMenuItemDTO;
import com.yjq.programmer.dto.PageDTO;
import com.yjq.programmer.dto.ResponseDTO;
import com.yjq.programmer.service.IMusicMenuService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author 杨杨吖
 * @QQ 823208782
 * @WX yjqi12345678
 * @create 2022-11-22 8:37
 */
@RestController("AppMusicMenuController")
@RequestMapping("/app/music/menu")
public class MusicMenuController {

    @Resource
    private IMusicMenuService musicMenuService;

    /**
     * 小程序保存歌单数据(添加、修改)
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/save")
    public ResponseDTO<Boolean> appSaveMusicMenu(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.appSaveMusicMenu(musicMenuDTO);
    }

    /**
     * 小程序删除歌单数据
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/remove")
    public ResponseDTO<Boolean> appRemoveMusicMenu(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.removeMusicMenu(musicMenuDTO);
    }

    /**
     * 小程序音乐添加歌单操作
     * @param musicMenuItemDTO
     * @return
     */
    @PostMapping("/add")
    public ResponseDTO<Boolean> appAddMusicMenu(@RequestBody MusicMenuItemDTO musicMenuItemDTO) {
        return musicMenuService.addMusicMenu(musicMenuItemDTO);
    }

    /**
     * 小程序获取个人歌单操作
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/getByUserId")
    public ResponseDTO<List<MusicMenuDTO>> appGetMusicMenuListByUserId(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.getMusicMenuListByUserId(musicMenuDTO);
    }

    /**
     * 小程序搜索歌单
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/search")
    public ResponseDTO<List<MusicMenuDTO>> appSearchMusicMenu(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.searchMusicMenu(musicMenuDTO);
    }

    /**
     * 小程序歌单浏览量增加
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/addView")
    public ResponseDTO<Boolean> appAddMusicMenuView(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.addMusicMenuView(musicMenuDTO);
    }

    /**
     * 小程序根据是否官方歌单筛选数据
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/getByIsOfficial")
    public ResponseDTO<List<MusicMenuDTO>> appGetMusicMenuByIsOfficial(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.getMusicMenuByIsOfficial(musicMenuDTO);
    }

    /**
     * 小程序根据id获取歌单数据
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/getById")
    public ResponseDTO<MusicMenuDTO> appGetMusicMenuById(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.getMusicMenuById(musicMenuDTO);
    }


    /**
     * 小程序获取热门歌单数据
     * @param pageDTO
     * @return
     */
    @PostMapping("/hot")
    public ResponseDTO<List<MusicMenuDTO>> appGetHotMusicMenuList(@RequestBody PageDTO<MusicMenuDTO> pageDTO) {
        return musicMenuService.getHotMusicMenuList(pageDTO);
    }

    /**
     * 小程序判断歌单是否是当前登录用户的
     * @param musicMenuDTO
     * @return
     */
    @PostMapping("/isMySelf")
    public ResponseDTO<Boolean> appGetIsMySelfMusicMenu(@RequestBody MusicMenuDTO musicMenuDTO) {
        return musicMenuService.getIsMySelfMusicMenu(musicMenuDTO);
    }

    /**
     * 小程序删除歌单详情数据
     * @param musicMenuItemDTO
     * @return
     */
    @PostMapping("/removeItem")
    public ResponseDTO<Boolean> appRemoveMusicMenuItem(@RequestBody MusicMenuItemDTO musicMenuItemDTO){
        return musicMenuService.removeMusicMenuItem(musicMenuItemDTO);
    }
}
